10 REM - PUZZLER'S CHOICE FOR C=64 20 REM - DANIEL MILLER 30 REM - ASTORIA, N.Y. 11103 40 REM - 4/19/86 50 VO=54296:WV=54276:AT=54277:HI=54273:LO=54272:MV=0:GOTO110 60 POKE781,P/40:POKE782,P-40*PEEK(781):POKE783,0:SYS65520:RETURN 65 POKE785,232:POKE786,7:POKE209,232:POKE210,7:POKE211,0:POKE213,39 66 PRINT" S&$[146][223]HD[146][193]$[146][160]D[146][194][160]":POKERL,PEEK(RL):RL=USR(RL):RETURN 70 POKEVO,15:POKEWV,17:POKEAT,15:POKEHI,68:POKELO,149 80 FORTM=1TO100:NEXT:POKEWV,0 90 POKEVO,15:POKEWV,17:POKEAT,15:POKEHI,34:POKELO,75 100 FORTM=1TO100:NEXT:POKEWV,0:RETURN 110 POKE53280,2:POKE53281,0:POKE646,1 120 PRINT"[147]":P=53:GOSUB60:PRINT"PUZZLER'S CHOICE[146]":PRINT 130 P=170:GOSUB60:PRINT"SELECT CHOICE:":PRINT 140 PRINT" 1. ALPHABET PUZZLE":PRINT" 2. JUGGERNAUT": 150 PRINT" 3. CHECKERS SWITCH":PRINT" 4. END PROGRAM":PRINT 160 PRINTTAB(15)" ENTER (1-4): ";:CT=FRE(0) 170 GETCH$:IFCH$<"1"ORCH$>"4"THEN170 180 PRINTCH$:ON VAL(CH$)GOTO200,1420,2510,190 190 END 200 DIMA$(16),B$(16),LT$(16),LU$(16),A(16),D1$(4,4) 210 AA=0:L2=RND(-TI):X1=16:GOTO1230 220 PRINT"[147]":POKE53281,11 230 P=54:GOSUB60:PRINT"ALPHABET PUZZLE[146]":PRINT:CT=FRE(0) 240 REM - PUZZLE SCREEN 250 P=120:GOSUB60:PRINT""; 260 PRINTTAB(15)A$(1);"[145][145]"A$(2);"[145][145]"A$(3);"[145][145]"A$(4) 270 PRINTTAB(15)A$(5);"[145][145]"A$(6);"[145][145]"A$(7);"[145][145]"A$(8) 280 PRINTTAB(15)A$(9);"[145][145]"A$(10);"[145][145]"A$(11);"[145][145]"A$(12) 290 PRINTTAB(15)A$(13);"[145][145]"A$(14);"[145][145]"A$(15);"[145][145]"A$(16) 300 IFMV>0THENGOSUB70 310 IFAA=0THEN330 320 ONAA-1 GOTO610,750,820 330 P=686:GOSUB60:PRINT" YOUR GOAL IN THIS PUZZLE IS TO" 340 PRINT" REARRANGE THE LETTERS ON THE PLAYING" 350 PRINT" BOARD INTO ORDER TO BE DISPLAYED ON" 360 PRINT" THE SCREEN." 370 P=926:GOSUB60:PRINT"[158]PRESS TO CONTINUE[146]"; 380 WAIT 198,1:GET RT$ 390 FORY=17TO24:POKE781,Y:SYS59903:NEXT 400 P=682:GOSUB60:PRINT" THERE ARE MORE THAN TEN TRILLION" 410 PRINT" LETTER COMBINATIONS.":PRINT 420 PRINT" PRESS 'F7' TO END THE PUZZLE.":PRINT 430 PRINTTAB(14)"HAPPY PUZZLING !"; 440 FORTM=1TO4000:NEXTTM 450 FORY=17TO24:POKE781,Y:SYS59903:NEXT 460 P=844:GOSUB60:PRINT"[159]PRESS TO SCRAMBLE LETTERS[146]";:POKE198,0 470 WAIT 198,1:GET RT$ 480 RT$="":POKE781,21:SYS59903 490 REM - SCRAMBLE LETTERS ON PUZZLE SCREEN 500 FORX=1TO16:A(X)=0:NEXTX 510 FORLT=1TO16:LT$(LT)=MID$(D$,LT,1):NEXTLT 520 L1=1 530 FORLL=1TO16 540 L2=INT(16*RND(1))+1 550 IFA(L2)>0THEN540 560 LU$(L1)=LT$(L2):A(L2)=L2:L1=L1+1:NEXTLL 570 D$="":FORX=1TO16:D$=D$+LU$(X):NEXTX 580 FORX=1TO16:LT$(X)="":A(X)=0:NEXTX 590 AA=2:GOTO1240 600 REM - IS ARRANGEMENT POSSIBLE ? 610 CT=0:Z=1:FORY=1TO16 620 FORX=ZTO15:IFMID$(D$,X+1,1) TO BEGIN[146]"; 720 WAIT 198,1:GET RT$ 730 POKE781,21:SYS59903:POKE781,24:SYS59903:RT$="" 740 AA=3:GOTO1230 750 FORX=1TO16:IFLU$(X)="P"THENLU$(X)="[158] [146][159]":GOTO770 760 NEXTX 770 P=270:GOSUB60:PRINT"[159]SOLVE[146]" 780 P=350:GOSUB60:PRINTLU$(1);" ";LU$(2);" ";LU$(3);" ";LU$(4) 790 PRINTTAB(30);LU$(5);" ";LU$(6);" ";LU$(7);" ";LU$(8) 800 PRINTTAB(30);LU$(9);" ";LU$(10);" ";LU$(11);" ";LU$(12) 810 PRINTTAB(30);LU$(13);" ";LU$(14);" ";LU$(15);" ";LU$(16) 820 IFD$=E$THEN1100:REM - PUZZLE SOLVED 830 FORX=1TO16:LT$(X)=MID$(D$,X,1):NEXT X 840 X=1:FORRO=1TO4:FORCL=1TO4:D1$(RO,CL)=MID$(D$,X,1):X=X+1:NEXTCL,RO 850 FORRO=1TO4:FORCL=1TO4:IFD1$(RO,CL)="P" THENR1=RO:C1=CL 860 NEXTCL,RO:P=852:GOSUB60:PRINT"PRESS 'F7' TO END" 870 P=696:GOSUB60:PRINT"LETTER ?[159] [146]";:POKE198,0 880 GETLT$:IFLT$=""THEN880 890 IFLT$="[136]"THEN1210 900 IFLT$<"A"ORLT$>"O"THENLT$="":GOTO880 910 PRINT"";LT$; 920 FORRO=1TO4:FORCL=1TO4:IFD1$(RO,CL)=LT$THEN R2=RO:C2=CL 930 NEXTCL,RO 940 IFABS(R1-R2)=1 AND ABS(C1-C2)=1 THEN960 950 IFSQR((R1-R2)^2+(C1-C2)^2)=1 THEN990 960 FORX=1TO5:P=935:GOSUB60:PRINT"INVALID MOVE[146]";:FORTM=1TO500:NEXTTM 970 POKE781,23:SYS59903:FORTM=1TO500:NEXTTM,X 980 P=705:GOSUB60:PRINT" ";:GOTO870 990 FORX=1TO16:IFLT$(X)=LT$THENX1=X 1000 NEXTX 1010 FORX=1TO16:IFLT$(X)="P"THENX2=X 1020 NEXTX 1030 LT$(X1)="P":LT$(X2)=LT$ 1040 D$="":FORX=1TO16:D$=D$+LT$(X):NEXTX 1050 P=705:GOSUB60:PRINT" "; 1060 P=776:GOSUB60:PRINT"[158]MOVE # [146]"; 1070 MV=MV+1:P=782:GOSUB60:PRINT"[158]";STR$(MV)"[146]"; 1080 AA=4:GOTO1240 1090 REM - END PUZZLE 1100 P=808:GOSUB60:PRINT"YOU'VE SOLVED THE PUZZLE![146]"; 1110 FORCL=LO TO LO+24:POKECL,0:NEXT 1120 POKELO+5,85:POKELO+6,85:POKELO+12,85:POKELO+13,85:POKELO+24,15 1130 POKELO+4,33:POKELO+11,17:RL=1190:GOSUB65 1140 FORX=1TO6:READH1,L1,H2,L2:POKELO,L1:POKELO+1,H1:POKELO+7,L2:POKELO+8,H2 1150 IFH1=50THENFORTM=1TO200:NEXTTM 1160 FORTM=1TO100:NEXTTM 1170 NEXTX 1180 FORCL=LO TO LO+24:POKECL,0:NEXT 1190 DATA25,30,18,209,33,135,25,30,42,62,31,165,50,60,37,162,42,62,31,165 1200 DATA50,60,37,162 1210 P=927:GOSUB60:PRINT"[159]THANKS FOR PLAYING. 'BYE'.[146]"; 1220 FORTM=1TO1500:NEXTTM:POKE198,0:RUN 1230 D$="ABCDEFGHIJKLMNOP":REM - PUZZLE FORMAT 1240 FORX=1TO16:IFMID$(D$,X,1)="P" THENX1=X 1250 NEXTX:IFMV=0THEN1280 1260 FORX=1TO16:IFMID$(D$,X,1)=LT$ THEN A=ASC(LT$)-64:A$=LT$:GOTO1300 1270 NEXTX 1280 FORX=1TO16:A$(X)="" 1290 A$=MID$(D$,X,1) 1300 B=(A$="A")+(A$="C")+(A$="F")+(A$="H")+(A$="I")+(A$="K")+(A$="N") 1305 B=-1320*(B=-1)-1350*(B=0) 1310 POKE785,188:POKE786,168:POKEB,PEEK(B):B=USR(0) 1320 A$(X)="[166][166][166][157][157][157][166][146]"+A$+"[166][157][157][157][166][166][166][146]":REM "[166]" IS 'C= +' [CHR$(166)] 1330 IFMV>0THEN1380 1340 NEXTX:GOTO1380 1350 A$(X)=" [157][157][157] [146]"+A$+" [157][157][157] [146]" 1360 IFMV>0THEN1380 1370 NEXTX 1380 A$(X1)="[158] [157][157][157] [157][157][157] [146]" 1390 IFAA=0THEN220 1400 GOTO230 1410 REM - JUGGERNAUT MAIN LOOP 1420 DIM LC%(10),CH$(10),SP(2),SP$(10):GOTO2400 1430 P=788:GOSUB60:PRINT" [157]";:CT=FRE(0):POKE198,0 1440 GETMV$:FORX=1TO11:IFMV$=MID$("[133][136]ABCDEFGHI",X,1)THEN1460 1450 NEXT:GOTO1440 1460 IFMV$="[136]"THEN1800 1470 IF MV$<>"[133]"THEN1500 1480 SOL=1:S=0:MV=0:SOL$="BEHA":GOTO2420 1490 S=S+1:MV$=MID$(SOL$,S,1) 1500 P=788:GOSUB60:PRINT MV$ 1510 IF CH$(ASC(MV$)-64)<>"X" AND CH$(ASC(MV$)-63)<>"X" THEN1530 1520 MSG$="INVALID MOVE[146]":P1=855:GOSUB1860:GOTO1430 1530 FOR X=1 TO 10:IF CH$(X)="X" THENLC=X:LD=X+1:GOTO1550 1540 NEXT 1550 SP(1)=ASC(MV$)-64:SP(2)=ASC(MV$)-63 1560 REM - MOVE CHECKERS 1570 FOR Y=LY% TO LZ% STEP-1 1580 POKEV+VAL(SP$(SP(2))),Y:POKEV+VAL(SP$(SP(1))),Y:NEXT 1590 IF SP(1)>LC THEN1640 1600 FOR X=LX%(SP(2)) TO LX%(LD) 1610 POKEV+VAL(SP$(SP(2)))-1,X:NEXT 1620 FOR X=LX%(SP(1)) TO LX%(LC) 1630 POKEV+VAL(SP$(SP(1)))-1,X:NEXT:GOTO1680 1640 FOR X=LX%(SP(1)) TO LX%(LC) STEP-1 1650 POKEV+VAL(SP$(SP(1)))-1,X:NEXT 1660 FOR X=LX%(SP(2)) TO LX%(LD) STEP-1 1670 POKEV+VAL(SP$(SP(2)))-1,X:NEXT 1680 FOR Y=LZ% TO LY% 1690 POKEV+VAL(SP$(SP(2))),Y:POKEV+VAL(SP$(SP(1))),Y:NEXT 1700 REM - UPDATE ARRAYS & MOVE-CTR 1710 CH$(LC)=CH$(SP(1)):CH$(LD)=CH$(SP(2)):CH$(SP(1))="X":CH$(SP(2))="X" 1720 SP$(LC)=SP$(SP(1)):SP$(LD)=SP$(SP(2)):SP$(SP(1))="XX":SP$(SP(2))="XX" 1730 MV=MV+1:P=516:GOSUB60:PRINT""RIGHT$(STR$(MV),LEN(STR$(MV))-1)"[146]"; 1740 SLV$="":FOR X=1 TO 10:SLV$=SLV$+CH$(X):NEXT 1750 IF SLV$=WIN$ THEN1780 1760 IF SOL=1 THEN1490 1770 GOTO1430 1780 IF SOL=1 THEN1800 1790 MSG$="CONGRATULATIONS !![146]":P1=850:GOSUB1860 1800 POKE781,21:SYS59903:POKE198,0:P=851:GOSUB60:PRINT"TRY AGAIN [Y/N]: "; 1810 GET YN$:IF YN$<>"Y" AND YN$<>"N" THENYN$="":GOTO1810 1820 PRINT YN$:POKEV+21,0 1830 IF YN$="Y" THEN RUN1420 1840 RUN 1850 REM - MESSAGE RTN. 1860 P=P1+80:FOR X=1 TO 5:GOSUB60:PRINT MSG$;:FOR TM=1 TO 500:NEXT TM 1870 POKE781,23:SYS59903:FORTM=1TO500:NEXTTM,X 1880 PRINT"":RETURN 1890 REM - SET UP SCREEN 1900 P=95:GOSUB60:PRINT"JUGGERNAUT[146]"; 1910 P=402:GOSUB60:PRINTL1$:P=P+40:GOSUB60:PRINTL1$ 1920 FOR X=1 TO 3:GOSUB1930:NEXT:GOTO1940 1930 PRINTSPC(2)L3$;SPC(28)L3$:RETURN 1940 P=P+160:GOSUB60:PRINTL1$ 1950 P=524:GOSUB60:FOR X=1 TO 9:PRINTL2$;:P=P+3:GOSUB60:NEXT 1960 P=684:GOSUB60:FOR X=1 TO 9:PRINT""CHR$(X+64);:P=P+3:GOSUB60:NEXT 1970 P=434:GOSUB60:PRINT"[150]MOVE#[146]"; 1980 REM - CHECKER SPRITES 1990 V=53248:V1=2040:T=13:POKEV+23,0:POKEV+29,0 2000 POKEV1,T:POKEV1+1,T:POKEV1+2,T:POKEV1+3,T:POKEV1+4,T 2010 POKEV1+5,T:POKEV1+6,T:POKEV1+7,T 2020 REM - SET UP SPRITES 2030 RL=2170:GOSUB65 2040 FOR SP=832 TO 894:READ Q1:POKESP,Q1:NEXT 2050 FOR X=39 TO 45 STEP2:POKEV+X,7:NEXT 2060 FOR X=40 TO 46 STEP2:POKEV+X,2:NEXT 2070 FOR Y=1 TO 15 STEP2:POKEV+Y,160:NEXT 2080 Z=40:FOR X=0 TO 14 STEP2:POKEV+X,Z:Z=Z+24:NEXT:POKEV+21,255 2090 IF ZZ=0 GOTO2150 2100 P=202:GOSUB60:PRINT"SOLUTION: [209] [209] [209] [209] [158][209] [209] [209] [209]"; 2110 P=254:GOSUB60:PRINT"A B C D E F G H I"; 2120 IF SOL=1 THEN1490 2130 P=842:GOSUB60:PRINT"'F1' - AUTO SOLVE 'F7' - MENU"; 2140 P=770:GOSUB60:PRINT"ENTER MOVE [A-I]:";:GOTO1430 2150 L1$="":L2$="":L3$="":GOTO2240 2160 REM - SPRITE DATA 2170 DATA 0,0,0,0,0,0,0,0,0 2180 DATA 0,62,0,1,255,192,7,255,240 2190 DATA 15,255,248,31,255,252,63,255,254 2200 DATA 63,255,254,127,255,255,127,227,255 2210 DATA 127,227,255,63,255,254,63,255,254 2220 DATA 31,255,252,15,255,248,7,255,240 2230 DATA 1,255,192,0,62,0,0,0,0 2240 P=240:GOSUB60:PRINT" YOUR GOAL IS TO MOVE THE CHECKERS FROM" 2250 PRINT" THESE POSITIONS:";:FOR TM=1 TO 3000:NEXT:POKEV+21,0 2260 GOSUB2380 2270 P=280:GOSUB60:PRINT" TO THESE POSITIONS:"; 2280 FOR X=39 TO 42:POKEV+X,2:NEXT 2290 FOR X=43 TO 46:POKEV+X,7:NEXT 2300 FOR Y=1 TO 15 STEP2:POKEV+Y,160:NEXT 2310 Z=88:FOR X=0 TO 12 STEP2:POKEV+X,Z:Z=Z+24:NEXT:POKEV+14,255:POKEV+21,255 2320 FOR TM=1 TO 2500:NEXT:GOSUB2380 2330 P=240:GOSUB60:PRINT" AFTER YOU SELECT A LETTER, THE TWO" 2340 PRINT" ADJACENT CHECKERS ABOVE IT WILL MOVE.":FOR TM=1 TO 3000:NEXT:GOSUB2380 2350 P=240:GOSUB60:PRINT" THIS PUZZLE CAN BE SOLVED IN 4 MOVES." 2360 FOR TM=1 TO 2500:NEXT 2370 POKEV+21,255:ZZ=1:GOSUB2380:GOTO2050 2380 POKE781,6:SYS59903:POKE781,7:SYS59903:RETURN 2390 REM - INITIALIZATION 2400 PRINT"[147]":POKE53280,11:POKE53281,0 2410 WIN$="XXRRRRYYYY":SOL=0:S=0 2420 FOR X=2 TO 8 STEP2:CH$(X)="R":NEXT:FOR X=1 TO 7 STEP2:CH$(X)="Y":NEXT 2430 CH$(9)="X":CH$(10)="X" 2440 LZ%=140:LY%=160:LW%=40:FOR X=1 TO 9:LX%(X)=LW%:LW%=LW%+24:NEXT 2450 LX%(10)=255 2460 SP%=1:FOR X=1 TO 8:SP$(X)=STR$(SP%):SP%=SP%+2:NEXT 2470 IF SOL=1 THEN2370 2480 L1$="[159] [146]":L2$="[159] [157][157] [146]":L3$="[159] [146]" 2490 GOTO1900 2500 REM - SWITCH 2510 DIM B(45),C(45),A$(4),ER$(5):GOSUB3610:GOTO3270 2520 REM- PUZZLE SCREEN 2530 CT=FRE(0):P=13:GOSUB60:PRINTHDG$; 2540 P=129:GOSUB60:PRINT"1[146] 2[146] 3[146] 4[146] 5[146] 6[146] 7[146] 8[146] 9[146]" 2550 P=160:GOSUB60:PRINT""; 2560 PRINTTAB(8)A$(B(1))"[145][145]"A$(B(2))"[145][145]"A$(B(3))"[145][145]"A$(B(4))"[145][145]"A$(B(5))"[145][145]"; 2570 PRINTTAB(21)A$(B(6))"[145][145]"A$(B(7))"[145][145]"A$(B(8))"[145][145]"A$(B(9)) 2580 IF VAL(F2$)<>1 THEN2600 2590 GOSUB70 2600 PRINTTAB(8)A$(B(10))"[145][145]"A$(B(11))"[145][145]"A$(B(12))"[145][145]"A$(B(13))"[145][145]"A$(B(14)); 2610 PRINTTAB(21)"[145][145]"A$(B(15))"[145][145]"A$(B(16))"[145][145]"A$(B(17))"[145][145]"A$(B(18)) 2620 IF VAL(F2$)<>2 THEN2640 2630 GOSUB70 2640 PRINTTAB(8)A$(B(19))"[145][145]"A$(B(20))"[145][145]"A$(B(21))"[145][145]"A$(B(22))"[145][145]"A$(B(23)); 2650 PRINTTAB(21)"[145][145]"A$(B(24))"[145][145]"A$(B(25))"[145][145]"A$(B(26))"[145][145]"A$(B(27)) 2660 IF VAL(F2$)<>3 THEN2680 2670 GOSUB70 2680 PRINTTAB(8)A$(B(28))"[145][145]"A$(B(29))"[145][145]"A$(B(30))"[145][145]"A$(B(31))"[145][145]"A$(B(32)); 2690 PRINTTAB(21)"[145][145]"A$(B(33))"[145][145]"A$(B(34))"[145][145]"A$(B(35))"[145][145]"A$(B(36)) 2700 IF VAL(F2$)<>4 THEN2720 2710 GOSUB70 2720 PRINTTAB(8)A$(B(37))"[145][145]"A$(B(38))"[145][145]"A$(B(39))"[145][145]"A$(B(40))"[145][145]"A$(B(41)); 2730 PRINTTAB(21)"[145][145]"A$(B(42))"[145][145]"A$(B(43))"[145][145]"A$(B(44))"[145][145]"A$(B(45)) 2740 IF VAL(F2$)<>5 THEN2760 2750 GOSUB70 2760 IFMV=0THEN X=49:FORP=206TO686STEP120:GOSUB60:PRINT""CHR$(X);:X=X+1:NEXTP 2770 P=765:GOSUB60:PRINT"'F1' - AUTO SOLVE 'F7' - MENU"; 2780 P=857:GOSUB60:PRINT"[156]MOVE #[146]"; 2790 P=931:GOSUB60:PRINT"[159]FROM ?"SPC(9)"TO ?[146]" 2800 IF D$=E$ THEN3170:REM - PUZZLE SOLVED 2810 IF ZZ=1 THEN FOR TM=1 TO 2000:NEXT TM:RETURN 2820 REM- MOVE ROUTINE 2830 P=939:GOSUB60:PRINT" ";SPC(11)" "; 2840 P=939:GOSUB60:PRINT" ";:GOSUB60:PRINTCR$;:IFSOL=0 THEN2860 2850 P=939:GOSUB60:READ FR$,TU$ 2855 PRINT""LEFT$(FR$,1);"";RIGHT$(FR$,1);"[146]"; 2856 PRINTSPC(9)" ";LEFT$(TU$,1);"";RIGHT$(TU$,1);"[146]";:GOTO2960 2860 GETF$:FORX=1TO7:IFF$=MID$("[133][136]12345",X,1)THEN2880 2870 NEXTX:F$="":GOTO2860 2880 IF F$<>"[133]"THEN2910 2890 SOL=1:S=0:MV=0:ZZ=0 2900 D$="":E$="":F2$="":MO$="":CT=FRE(0):GOSUB3750:GOTO2530 2910 IF F$="[136]"THEN3590 2920 PRINT""F$;:POKE198,0 2930 GETG$:FORX=1TO9:IFG$=MID$("123456789",X,1)THEN2950 2940 NEXTX:GOTO2930 2950 PRINT""G$"[146]";:FR$=F$+G$:F$="":G$="" 2960 H=VAL(FR$):GOSUB3500:FR=H:C(FR)=VAL(MID$(D$,FR,1)):IFSOL=1THEN3030 2970 P=950:GOSUB60:PRINT" ";:P=951:GOSUB60:PRINTCR$;:POKE198,0 2980 GETF$:FORX=1TO5:IFMID$("12345",X,1)=F$THENPRINT""F$;:POKE198,0:GOTO3000 2990 NEXTX:GOTO2980 3000 GETG$:FORX=1TO9:IFMID$("123456789",X,1)=G$THENPRINT""G$"[146]";:GOTO3020 3010 NEXTX:GOTO3000 3020 TU$=F$+G$:F$="":G$="" 3030 H=VAL(TU$):GOSUB3500:TU=H:C(TU)=VAL(MID$(D$,TU,1)) 3040 Z1=VAL(LEFT$(FR$,1)):Z2=VAL(RIGHT$(FR$,1)) 3050 Z3=VAL(LEFT$(TU$,1)):Z4=VAL(RIGHT$(TU$,1)) 3060 F2$=LEFT$(FR$,1) 3070 FR$=MID$(D$,FR,1):TU$=MID$(D$,TU,1) 3080 IF FR$="4" THEN ER=1:GOTO3230 3090 IF TU$="1" OR TU$="2" THEN ER=2:GOTO3230 3100 IF FR$="3" OR TU$="3" THEN ER=3:GOTO3230 3110 IF Z1=Z3 OR Z2=Z4 THEN ER=4:GOTO3230 3120 C=C(TU):C(TU)=C(FR):C(FR)=C 3130 D$="":FOR X=1 TO 45:D$=D$+RIGHT$(STR$(C(X)),1):NEXT X 3140 P=979:GOSUB60:PRINT" ";SPC(11)" "; 3150 FOR X=1 TO 45:B(X)=VAL(MID$(D$,X,1)):NEXT X 3160 MV=MV+1:MO$=""+STR$(MV)+"[146]":P=864:GOSUB60:PRINTMO$;:GOTO2530 3170 IFSOL=1THEN3590 3180 FOR X=1 TO 5 3190 P=967:GOSUB60:PRINT"YOU SOLVED THE PUZZLE![146]":FORTM=1TO1500:NEXT 3200 POKE781,24:SYS59903:FORTM=1TO500:NEXTTM,X 3210 GOTO3590 3220 REM- FLASH ERROR MESSAGES 3230 F2$="":TB=(24-(LEN(ER$(ER))/2)):POKE781,24:SYS59903:FORX=1TO5 3240 P=960:GOSUB60:PRINTTAB(TB)ER$(ER);:FORTM=1TO500:NEXTTM 3250 POKE781,24:SYS59903:FORTM=1TO500:NEXTTM,X:GOTO2530 3260 REM- INSTRUCTIONS 3270 POKE 53281,1 3280 PRINT"[147]"CHR$(14):P=132:GOSUB60:PRINTH2$;:PRINT:PRINT 3290 PRINT" [208]REPARE TO TEST YOUR PUZZLER'S":PRINT 3300 PRINT" SKILLS. [197]IGHT [215]HITE[146] CHECKERS AND":PRINT 3310 PRINT" EIGHT [144][194]LACK[146] CHECKERS ARE POSITIONED":PRINT 3320 PRINT" ON OPPOSITE SIDES OF THE CHECKERBOARD ";:PRINT 3330 PRINT" AS SHOWN:" 3340 ZZ=1:GOSUB3480:POKE53281,1 3350 PRINT"[147]":P=132:GOSUB60:PRINTH2$;:PRINT:PRINT:ZZ=0 3360 PRINT" [217]OUR GOAL IS TO SWITCH THE CHECKERS":PRINT 3370 PRINT" TO THE REVERSE SIDES OF THE BOARD. [193]":PRINT 3380 PRINT" CHECKER CAN BE MOVED TO A [210]ED[146] SQUARE":PRINT 3390 PRINT" OR CAN BE JUMPED OVER ANOTHER PIECE":PRINT 3400 PRINT" TO ANOTHER [210]ED[146] SQUARE. [215]HITE[146] PIECES":PRINT 3410 PRINT" MOVE TO THE [210][201][199][200][212]; [144][194]LACK[146] CHECKERS":PRINT 3420 PRINT" CAN MOVE ONLY TO THE [204][197][198][212]." 3430 FOR TM=1 TO 3000:NEXT TM 3440 PRINT"[147]":P=120:GOSUB60:PRINTCHR$(14)"[195]HECKERS [211]WITCH";:PRINT:PRINT 3450 PRINT" [212]HIS PUZZLE CAN BE SOLVED IN 52":PRINT 3460 PRINT" MOVES.":PRINT:PRINT 3470 PRINT" [200]AVE FUN AND [199]OOD [204]UCK !" 3480 FOR TM=1 TO 2500:NEXT TM:PRINT"[147]":D$="":E$="":F2$="":GOSUB3750 3490 MV=0:POKE53281,11:PRINT"[147]"CHR$(142):GOTO2530 3500 REM- CONVERT 'FROM-TO' POSITION IN STRING 3510 IFH>10THENIFH<20THENIFH/2<>INT(H/2)THENH=H-10:RETURN 3520 IFH>21THENIFH<29THENIFH/2=INT(H/2)THENH=H-11:RETURN 3530 IFH>30THENIFH<40THENIFH/2<>INT(H/2)THENH=H-12:RETURN 3540 IFH>41THENIFH<49THENIFH/2=INT(H/2)THENH=H-13:RETURN 3550 IFH>50THENIFH<60THENIFH/2<>INT(H/2)THENH=H-14:RETURN 3560 ER=3:GOTO3230:REM - MOVE INVALID 3570 REM- END PUZZLE MESSAGE 3580 POKE781,23:SYS59903 3590 P=928:GOSUB60:PRINT"THANKS FOR PLAYING. 'BYE.[146]"; 3600 FORTM=1TO3000:NEXT:RUN 3610 REM- BUILD CHARACTER GRAPHICS 3620 GR$=" [146][157][157][157]" 3630 A$(1)=GR$+" [146][209] [146][157][157][157] [146]" 3640 A$(2)=GR$+" [146][144][209] [146][157][157][157] [146]" 3650 A$(3)=" [146][157][157][157] [146][157][157][157] [146]" 3660 A$(4)=GR$+" [146][157][157][157] [146]" 3670 GR$="":CR$="[158] [146]" 3680 HDG$="[158]CHECKERS SWITCH[146]":H2$=CHR$(14)+"[195]HECKERS [211]WITCH[146]" 3690 REM- ERRORS 3700 ER$(1)="[158]'FROM' POSITION EMPTY[146]":ER$(2)="[158]'TO' POSITION OCCUPIED[146]" 3710 ER$(3)="[158]INVALID 'FROM-TO' POSITION[146]" 3720 ER$(4)="[158]MOVE NOT DIAGONAL[146]":ER$(5)="[158]INVALID MOVE[146]" 3730 F2=0:F2$="":RL=3790:GOSUB65 3740 REM- PUZZLE FORMAT 3750 D$="431343234313132323131343232313132323431343234" 3760 PRINTCHR$(142):FORX=1TO45:B(X)=VAL(MID$(D$,X,1)):C(X)=B(X):NEXTX 3770 REM- PUZZLE SOLVED FORMAT 3780 E$="432343134323231313232343131323231313432343134":RETURN 3790 DATA26,35,44,26,35,44,24,35,46,24,37,46,26,37,17,26,35,17,13,35,24,13 3800 DATA33,24,44,33,26,44,35,26,46,35,24,46,42,24,31,42,13,31,22,13,33,22 3810 DATA44,33,53,44,35,53,57,35,48,57,39,48,17,39,28,17,37,28,48,37,26,48 3820 DATA44,26,35,44,17,35,26,17,37,26,46,37,24,46,35,24,13,35,24,13,42,24 3830 DATA33,42,44,33,26,44,35,26,57,35,46,57,24,46,35,24